package com.jiarong.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;


/**
 * 页面跳转
 *
 * @author 加绒
 */
@Controller
public class PageJumpController extends BaseController {
    /**
     * 返回字符串形式（配置内部资源视图解析器来设置jsp路径的前后缀）
     *
     * @return 返回jsp的路径
     */
    @RequestMapping(value = "/test1", method = RequestMethod.GET)
    public String test1() {
        return "test/test01";
    }

    /**
     * <p>返回模型和视图形式</p>
     * <p>Model 模型 封装数据</p>
     * <p>View 视图 展示数据</p>
     *
     * @return 返回ModelAndView对象
     */
    @RequestMapping(value = "/test2", method = RequestMethod.GET)
    public ModelAndView test2() {
        // new一个ModelAndView对象
        ModelAndView modelAndView = new ModelAndView();
        // 设置模型数据
        modelAndView.addObject("name", "啊这02");
        // 设置视图名称
        modelAndView.setViewName("test/test02");
        return modelAndView;
    }

    /**
     * 可以将ModelAndView对象设置为方法形参
     *
     * @param modelAndView 模型和视图
     * @return 返回ModelAndView对象
     */
    @RequestMapping(value = "/test3", method = RequestMethod.GET)
    public ModelAndView test3(ModelAndView modelAndView) {
        modelAndView.addObject("name", "啊这03");
        modelAndView.setViewName("test/test03");
        return modelAndView;
    }

    /**
     * <p>也可以将Model对象设置为方法形参</p>
     * <p>因为只有模型，所以视图需要返回一个jsp路径</p>
     *
     * @param model 模型
     * @return 返回jsp的路径
     */
    @RequestMapping(value = "/test4", method = RequestMethod.GET)
    public String test4(Model model) {
        model.addAttribute("name", "啊这04");
        return "test/test04";
    }

    /**
     * 也可以将HttpServletRequest对象设置为方法形参
     *
     * @param request HTTP请求
     * @return 返回jsp的路径
     */
    @RequestMapping(value = "/test5", method = RequestMethod.GET)
    public String test5(HttpServletRequest request) {
        request.setAttribute("name", "啊这05");
        return "test/test05";
    }
}
